$(function () {//加载表格
    $('#dg').datagrid({
        loadMsg: '数据加载中，请稍后...',
        url: reportworld + '/tableStandardCheck/listInfo',
        pagination: true,
        singleSelect: false,//如果为true，则只允许选择一行。
        title: "表校验规则列表",
        pageSize: pageSize,
        pageList: pageList,
        checkOnSelect: true,//当用户点击行的时候该复选框就会被选中或取消选中。
        striped: true,//是否显示斑马线效果。
        rownumbers: true,// 显示一个行号列
        fitColumns: false,//真正的自动展开/收缩列的大小，以适应网格的宽度，防止水平滚动。
        columns: [[
            {field: 'itemid', title: 'Order ID', width: 80, checkbox: true},
            {field: 'id', title: '编号', hidden: true},
            {field: 'status', title: '状态', hidden: "true"},
            {field: 'tableNamePrefix', title: '表名前缀'},
            {field: 'tableNameSuffix', title: '表名后缀'},
            {field: 'tableNameContain', title: '表名包含'},
            {field: 'checkCode', title: '类型', hidden: "true"},
            {field: 'strCheckCode', title: '类型'},
            {field: 'checkValue', title: '类型对应值', hidden: "true"},
            {field: 'strCheckValue', title: '类型对应值'},
            {field: 'strStatus', title: '状态'},
            {field: 'addUser', title: '添加人'},
            {field: 'addTime', title: '添加时间'},
            {field: 'editUser', title: '修改人'},
            {field: 'editTime', title: '修改时间'}
        ]],
        loadFilter: function (data) { //加载后台数据
            if (successcode != data.code) {
                return errorHandle(data);
            }
            return data.data;
        },
        //表格样式
        rowStyler: function (index, row) {
            return rowStyler(row.status);
        },
        //双击事件
        onDblClickRow: function (rowIndex, rowData) {
            view(rowData)
        }
    }).datagrid("columnMoving");
    initData();
    setCombotree();
    comboboxChanage();
})

/**
 * 所属模块，客户，报表控制只能选择子节点
 */
function setCombotree() {
    $("#modular").combotree({
        onSelect: function (node) {
            //返回树对象
            var tree = $(this).tree;
            //选中的节点是否为叶子节点,如果不是叶子节点,清除选中
            var isLeaf = tree('isLeaf', node.target);
            if (!isLeaf) {
                //清除选中
                $('#modular').combotree('clear');
            }
        }
    });
    $("#customer").combotree({
        onSelect: function (node) {
            //返回树对象
            var tree = $(this).tree;
            //选中的节点是否为叶子节点,如果不是叶子节点,清除选中
            var isLeaf = tree('isLeaf', node.target);
            if (!isLeaf) {
                //清除选中
                $('#customer').combotree('clear');
            }
        }
    });
    $("#report").combotree({
        onSelect: function (node) {
            //返回树对象
            var tree = $(this).tree;
            //选中的节点是否为叶子节点,如果不是叶子节点,清除选中
            var isLeaf = tree('isLeaf', node.target);
            if (!isLeaf) {
                //清除选中
                $('#report').combotree('clear');
            }
        }
    });
}

/**
 * 检验类型 改变事件
 */
function comboboxChanage() {
    $('#checkCode').combobox({
        onChange: function (n, o) {
            if (isNull(n)) {
                return;
            }
            if ("LAYERED" == n) {
                $("#layeredTr").show();
                $('#layered').combobox({
                    required: true
                });
                $("#customerTr").hide();
                $('#customer').combotree({
                    required: false
                });
                $("#reportTr").hide();
                $('#report').combotree({
                    required: false
                });
                $("#modularTr").hide();
                $('#modular').combotree({
                    required: false
                });
            }
            if ("CUSTOMER" == n) {
                $("#layeredTr").hide();
                $('#layered').combobox({
                    required: false
                });
                $("#customerTr").show();
                $('#customer').combotree({
                    required: true
                });
                $("#reportTr").hide();
                $('#report').combotree({
                    required: false
                });
                $("#modularTr").hide();
                $('#modular').combotree({
                    required: false
                });
            }
            if ("REPORT" == n) {
                $("#layeredTr").hide();
                $('#layered').combobox({
                    required: false
                });
                $("#customerTr").hide();
                $('#customer').combotree({
                    required: false
                });
                $("#reportTr").show();
                $('#report').combotree({
                    required: true
                });
                $("#modularTr").hide();
                $('#modular').combotree({
                    required: false
                });
            }
            if ("MODULAR" == n) {
                $("#layeredTr").hide();
                $('#layered').combobox({
                    required: false
                });
                $("#customerTr").hide();
                $('#customer').combotree({
                    required: false
                });
                $("#reportTr").hide();
                $('#report').combotree({
                    required: false
                });
                $("#modularTr").show();
                $('#modular').combotree({
                    required: true
                });
            }
        }
    });
}

// 初始化加载下拉框的值
function initData() {
    $.ajax({
            type: "post",
            url: reportworld + "/tableStandardCheck/init",
            dataType: "json",
            success: function (data) {
                if (successcode != data.code) {
                    return errorHandle(data);
                }
                // 所属模块
                var listModular = data.data.listModular;
                // 字段所属客户
                var listCustomer = data.data.listCustomer;
                //字段所属报表
                var listReport = data.data.listReport;
                //状态
                var listStatus = data.data.listStatus;
                // 检验的类型
                var listCheckTableCode = data.data.listCheckTableCode;
                // 所在分层
                var listLayered = data.data.listLayered;
                if (!isNull(listModular)) {
                    $('#modular').combotree({data: listModular});
                    $('#selModular').combotree({data: listModular});
                }
                if (!isNull(listCustomer)) {
                    $('#customer').combotree({data: listCustomer});
                    $('#selCustomer').combotree({data: listCustomer});
                }
                if (!isNull(listReport)) {
                    $('#report').combotree({data: listReport});
                    $('#selReport').combotree({data: listReport});
                }
                if (!isNull(listStatus)) {  //状态
                    var listStatus2 = data.data.listStatus2;
                    listStatus2.unshift({"showmsg": "==全部==", "value": ''});
                    $("#selStatus").combobox("loadData", listStatus2);
                    $("#status").combobox("loadData", listStatus);
                }
                if (!isNull(listCheckTableCode)) {
                    $("#checkCode").combobox("loadData", listCheckTableCode);
                    var listCheckTableCode2 = data.data.listCheckTableCode2;
                    listCheckTableCode2.unshift({"showmsg": "==全部==", "value": ''});
                    $("#selCheckCode").combobox("loadData", listCheckTableCode2);
                }
                if (!isNull(listLayered)) {
                    $("#layered").combobox("loadData", listLayered);
                }
            }, error: function (data) {
                $.messager.progress('close');
                $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
            }
        }
    );
}


//搜索的方法
function doSearch() {
    var queryParams = $("#dg").datagrid("options").queryParams;
    queryParams["tableNamePrefix"] = $("#selTableNamePrefix").val();
    queryParams["tableNameSuffix"] = $("#selTableNameSuffix").val();
    queryParams["tableNameContain"] = $('#selTableNameContain').val();
    queryParams["status"] = $('#selStatus').combobox('getValue');
    queryParams["checkCode"] = $('#selCheckCode').combobox('getValue');
    $("#dg").datagrid("options").queryParams = queryParams;
    $("#dg").datagrid("load");
}

/**
 *  查看方法
 */
function view(rowData) {
    $('#myform').form('disableValidation');//清除验证样式
    $('#dlg').dialog({
        title: "查看表校验规则信息",
        buttons: [{
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myform').form('load', rowData);//页面赋值
    setValue(rowData)
}


/**
 * 新增表校验规则信息方法
 */
function addTableStandardCheck() {
    $("#myform").form('clear');//添加之前清空表达信息
    $('#myform').form('enableValidation');//设置验证样式
    $('#dlg').dialog({
        title: "新增表校验规则信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemTableStandardCheck(1);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#checkCode').combobox('selectedIndex', 0); //选中第一个
    $('#status').combobox('selectedIndex', 0); //选中第一个
}

/**
 * 修改表校验规则方法
 */
function editTableStandardCheck() {
    $('#myform').form('enableValidation');//设置验证样式
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length != 1) {
        $.messager.alert('系统提示', "请选择一行数据！", 'warning');
        return;
    }
    $('#dlg').dialog({
        title: "修改表校验规则信息",
        buttons: [{
            text: '保存',
            iconCls: 'icon-save',
            handler: function () {
                saveItemTableStandardCheck(2);
            }
        }, {
            text: '返回',
            iconCls: 'icon-back',
            handler: function () {
                $('#dlg').dialog('close');
            }
        }
        ]
    }).dialog('open');
    $('#myform').form('load', arr[0]);//页面赋值
    setValue(arr[0])
}

/**
 * 类型设置树结构选中
 * @param rowData
 */
function setValue(rowData) {
    if ("LAYERED" == rowData.checkCode) {
        $("#layered").combobox("setValue", rowData.checkValue);
    }
    if ("CUSTOMER" == rowData.checkCode) {
        $("#customer").combotree("setValue", rowData.checkValue);
    }
    if ("REPORT" == rowData.checkCode) {
        $("#report").combotree("setValue", rowData.checkValue);
    }
    if ("MODULAR" == rowData.checkCode) {
        $("#modular").combotree("setValue", rowData.checkValue);
    }
}

/**
 * 保存表校验规则信息的方法
 */
function saveItemTableStandardCheck(ftype) {
    //验证表单信息
    if (!$("#myform").form('validate')) { //验证表单信息
        return;
    }
    if (isNull($("#tableNamePrefix").val()) && isNull($("#tableNameSuffix").val()) && isNull($("#tableNameContain").val())) {
        $.messager.alert('系统提示', "表名前缀，表名后缀，表名包含至少填写一个！", 'warning');
        return;
    }
    var url = reportworld + "/tableStandardCheck/editTableStandardCheck";
    if (1 == ftype) {
        url = reportworld + "/tableStandardCheck/addTableStandardCheck";
    }
    $.messager.confirm('系统提示', "确定保存表校验规则信息吗？", function (parm) {
        if (!parm) {
            return;
        }
        $('#myform').form('submit', {
            url: url,
            onSubmit: function (param) {
                //验证表单信息
                var checkCode = $("#checkCode").combobox("getValue");
                if ("LAYERED" == checkCode) {
                    param.checkValue = $("#layered").combobox("getValue");
                }
                if ("MODULAR" == checkCode) {
                    param.checkValue = $("#modular").combotree("getValue");
                }
                if ("CUSTOMER" == checkCode) {
                    param.checkValue = $("#customer").combotree("getValue");
                }
                if ("REPORT" == checkCode) {
                    param.checkValue = $("#report").combotree("getValue");
                }
                $.messager.progress({text: '正在处理中...',});
            }, success: function (data) {
                $.messager.progress('close');
                try {
                    data = JSON.parse(data);
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    //关闭弹出窗口
                    $('#dlg').dialog('close');
                    $.messager.show({title: '系统提示', msg: data.message});
                    $("#dg").datagrid("load");//刷新表格
                } catch (e) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        });
    });
}

/**
 * 删除表校验规则信息方法
 */
function delTableStandardCheck() {
    var arr = $('#dg').datagrid('getSelections');
    if (null == arr || arr.length == 0) {
        $.messager.alert('系统提示', "请选择你要删除的数据！", 'warning');
        return;
    }
    $.messager.confirm('系统提示', '确定要删除这' + arr.length + '条操表校验规则信息吗？', function (param) {
        if (!param) {
            return;
        }
        var ids = [];
        for (var i = 0; i < arr.length; i++) {
            ids.push(arr[i].id);
        }
        $.messager.progress({text: '正在处理中...',});
        $.ajax({
                type: "post",
                url: reportworld + "/tableStandardCheck/delTableStandardCheck",
                dataType: "json",
                data: {
                    ids: JSON.stringify(ids)
                },
                success: function (data) {
                    $.messager.progress('close');
                    if (successcode != data.code) {
                        return errorHandle(data);
                    }
                    $("#dg").datagrid("load");//刷新表格
                    $.messager.show({title: '系统提示', msg: data.message});
                }, error: function (data) {
                    $.messager.progress('close');
                    $.messager.alert('系统提示', "系统异常，请稍后重试！", 'error');
                }
            }
        );
    });
}
